home *** CD-ROM | disk | FTP | other *** search
/ Transactor / Transactor_05_1985_Transactor_Publishing.d64 / hires listing 4 (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  2KB  |  76 lines

  1. 10 print"[147]":poke 53280,5:poke 53281,0
  2. 20 if peek(49152)<>76 then load "hires",8,1
  3. 97 :
  4. 98 rem initialize variables
  5. 99 :
  6. 100 hires=12*4096:draw=hi+3:plot=dr+3:move=pl+3:clscr=mo+3:dmode=cl+3
  7. 110 selpc=dm+3:colour=se+3:box=co+3:text=bo+3:prnt=te+3:chset=pr+3:trap=ch+3
  8. 120 goto 1000
  9. 197 :
  10. 198 rem plot the graph
  11. 199 :
  12. 200 x=x+dx:if x>xax then 500
  13. 210 sys trap,400 : rem  catch any errors in function calculations
  14. 220 y=sin(2*x) + cos(3*x) : rem  insert function to be graphed here
  15. 230 sys trap,450 : rem  now catch any plotting errors
  16. 240 xp=(x-xin)*sx : rem  x-coordinate for plot
  17. 250 yp=(y-yin)*sy : rem  y-coordinate for plot
  18. 260 on pf goto 290,310
  19. 267 :
  20. 268 rem  last point was plotted ok, so draw from last point to current point
  21. 269 :
  22. 270 sys draw,xp,yp
  23. 280 goto 200
  24. 287 :
  25. 288 rem  last point was out of range, so draw from boundary to current point
  26. 289 :
  27. 290 sys draw,xp,boundary to xp,yp
  28. 300 pf=0:goto 200
  29. 307 :
  30. 308 rem  last point was not defined, so just plot the current point
  31. 309 :
  32. 310 sys plot,xp,yp
  33. 320 pf=0:goto 200
  34. 397 :
  35. 398 rem  something went wrong with the function
  36. 399 :
  37. 400 err=peek(781):pf=2
  38. 410 if err=14 then 200 : rem  illegal quantity error
  39. 420 if err=20 then 200 : rem  division by zero error
  40. 430 if err=16 then 200 : rem  overflow error
  41. 440 if err=11 then sys prnt,3,23,"syntax error in function definition":goto 510
  42. 445 sys prnt,4,23,"oops! i forgot about error #"+str$(err):goto 510
  43. 446 :
  44. 447 rem  tried to plot out of range.  x-coord. should be o.k.
  45. 448 rem  therefore, just test the y-coord.
  46. 449 :
  47. 450 err=peek(781):if err<>14 then 445
  48. 460 if yp>199 then boundary=199 : rem  point is above top of screen
  49. 470 if yp<0 then boundary=0 : rem  point is below bottom of screen
  50. 480 if pf=0 then sys draw,xp-dx,boundary
  51. 490 pf=1:goto 200
  52. 497 :
  53. 498 rem  end by pressing <return>
  54. 499 :
  55. 500 sys prnt,13,23,"graph completed"
  56. 510 get a$:if a$<> chr$(13) then 510
  57. 520 end
  58. 997 :
  59. 998 rem begin the show
  60. 999 :
  61. 1000 xin=-2*(NULL) : rem  minimum value for x
  62. 1010 xax= 2*(NULL) : rem  maximum value for x
  63. 1020 yin=-3.0 : rem  minimum value for y
  64. 1030 yax= 3.0 : rem  maximum value for y
  65. 1040 sx=160/(xax-xin) : rem  scale in x direction
  66. 1050 sy=200/(yax-yin) : rem  scale in y direction
  67. 1060 dx= (xax-xin)/160 : rem  set increment for 160 point plot
  68. 1070 pf=2 : rem initialize plotting flag
  69. 1080 rem  pf=0  ...  last point calculated was plotted o.k.
  70. 1090 rem  pf=1  ...  last point calculated was out of range
  71. 1100 rem  pf=2  ...  last point calculated was undefined
  72. 1110 x=xin - dx : rem  initialize x
  73. 1120 sys hires,1,0,1,0,1
  74. 1130 sys dmode,1:sys selpc,1
  75. 1140 goto 200
  76.